package hpp.dp;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 给你六种面额 1、5、10、20、50、100 元的纸币，假设每种币值的数量都足够多，编写程序求组成N元（N为0~10000的非负整数）的不同组合的个数。
 * Created by hpp on 2017/8/28.
 */

public class Money {

    //用dp[n]来存组成n元的不同组合的个数
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        long[] dp = new long[1 + n];
        Arrays.fill(dp, 1);
        int[] w = {1, 5, 10, 20, 50, 100};
//        int [] w={1,2,3,4,5,6};
        for (int i = 1; i < w.length; i++) {
            for (int j = w[i]; j <= n; j++) {
                dp[j] += dp[j - w[i]];
            }
        }
        System.out.println(dp[n]);
    }

}
